// components/face-cam/face-cam.js
const api = require('../../utils/api')

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    camFlag:false,
    wh: 0,
    score:90,
    position: 'front',
    src: '',
    token: '',
    faceinfo: {},
  },

  lifetimes: {
    // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
    attached: function () {
      // 获取设备的信息
      this.getWH()
    },
  },
  /**
   * 组件的方法列表
   */
  methods: {
    //获取页面高度
    getWH() {
      const sysinfo = wx.getSystemInfoSync()
      this.setData({
        wh: sysinfo.windowHeight
      })
    },
    // 切换摄像头
    reverse() {
      this.setData({
        position: this.data.position === 'back' ? 'front' : 'back'
      })
    },

    // 点击拍照
    takePhoto() {
      // 创建拍照的上下文对象
      const ctx = wx.createCameraContext()
      // 调用 takePhoto 函数拍照
      ctx.takePhoto({
        quality: 'low',
        success: (res) => {
          console.log(res)
          this.setData({
            src: res.tempImagePath
          }, () => {
            // this.getFaceInfo()
            this.processParams()
          })
        }
      })
    },

    // 选择照片
    choosePhoto() {
      wx.chooseImage({
        count: 1,
        sizeType: ['original'],
        sourceType: ['album'],
        success: (res) => {
          if (res.errMsg === 'chooseImage:ok' && res.tempFilePaths.length !== 0) {
            this.setData({
              src: res.tempFilePaths[0]
            }, () => {
              // 获取颜值数据
              console.log("============================")
              this.processParams()
            })
          }
        }
      })
    },

    // 重新拍照
    reChoose() {
      this.setData({
        src: '',
        faceinfo: '',
        token: ''
      })
    },

    // 2. 处理参数
    processParams() {
      const params = {
        // 图片
        image: '',
        // 发送到服务器的图片格式，是 BASE64 这种图片格式
        image_type: 'BASE64',
        // 希望颜值检测完毕后，服务器返回哪些颜值数据
        face_field: 'age,gender,beauty,expression,glasses,emotion'
      }

      // 根据图片路径，把图片转为 base64 格式，然后，赋值给 params.image
      const fileManager = wx.getFileSystemManager()
      fileManager.readFile({
        // 要读取哪个文件
        filePath: this.data.src,
        // 以什么格式来读取指定的文件
        encoding: 'base64',
        success: (res) => {
          params.image = res.data
          console.log(res.data)
          // 3. 发送请求，检测人脸数据
          this.testFace(params.image)
        }
      })
    },

    testFace(e){
      wx.showLoading({
        title: '人像识别中…',
      })
       
      var dto={
        Image:e
      }
      console.log(dto)
      api.detectLiveFace(dto).then(res=>{
        if(res.code===1){
          if(res.info.score>80){
            //创造人员
            dto.GroupId = 'test'
            dto.PersonName = 'AAA'
            dto.PersonId = res.info.requestId
            api.createPerson(dto).then(res=>{
              console.log(res)
              if(res.code===1){
                // 更改人脸上传执行
                setTimeout(function () {
                  wx.hideLoading()
                }, 100) 
                // wx.navigateTo({
                //   url: '/pages/face/face?personid='+dto.PersonId,
                // })
                this.triggerEvent('face',{
                  personid:dto.PersonId
                })
              }
            }).catch(e=>{
              console.log(e)
            })
          }else{
            this.setData({
              score:60
            })
            wx.showToast({
              title: '请重新拍摄',
              icon: 'error',
              duration: 2000
            })
          }
        }
      }).catch(e=>{
        console.log(e)
      })


    }

  }
})